package com.atguigu.FileIO;

import java.io.*;

/**
 * 一、缓存流介绍
 *      1.字节流
 *          1.1.BufferedInputStream(输入流）:当使用BufferedInputStream读取字节文件时，BufferedInputStream会一次性从
 *              文件中读取8192个(8Kb)，存在缓冲区中，直到缓冲区装满了，才重新从文件中
 *              读取下一个8192个字节数组。
 *          1.2.BufferedOutputStream(输出流):向流中写入字节时，不会直接写到文件，先写到缓冲区中直到缓冲区写满，
 *              BufferedOutputStream才会把缓冲区中的数据一次性写到文件里。flush()可以强制将缓冲区的内容全部写入输出流
 *      2.字符流
 *          2.1.BufferedReader(输入流）
 *          2.2.BufferedWriter(输出流)
 * @author xiaoqi
 * @data 2021/04/13 20:52
 */
public class CacheStream {
    public static void main(String[] args) {
        BufferedReader br = null;
        BufferedWriter bw = null;
        try {
            //设置输入输出对象
//            br = new BufferedReader(new FileReader("D:\\Program Files (x86)\\qq2312762680\\test1.txt"));
            br = new BufferedReader(new FileReader("D:\\Googl浏览器下载\\尚学堂_爬虫\\01_尚学堂_爬虫介绍_Python网络爬虫实战.mp4"));
            bw = new BufferedWriter(new FileWriter("D:\\Program Files (x86)\\qq2312762680\\test2.txt", true));
            //读入的一行字节
            String str;
            while((str = br.readLine()) != null){
                //写入一行
                bw.write(str + "\n");
                //换行
//                bw.newLine();
            }
            //刷新缓存区
            bw.flush();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //关闭IO流
            if(br != null){
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(bw != null){
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
    }
}
